Testing of a software application is one of the most critical phase of any Software Development Lifecycle (SDLC). With the development in Information Technology, software applications are launched more frequently. Nowadays, new versions of the existing software applications are launched in the market. In order to launch new versions of the software application in an effective manner, developers are continuously making efforts in order to reduce the turnaround time for development and testing of the latest software application. Considering the number of available resources and available time, at the time of new release of the software application, only a few selected test cases are used in order to conduct the regression testing of the software application.
In typical product development life cycle, on release of each version, it is important to identify whether the regression test case collection is sufficient enough to ensure the quality and to identify the new case requirements. Due to time limitations and other constraints, it may not be feasible to execute all test cases. At the same time, by selecting a subset of test cases randomly, the quality of the tests may be compromised. There are various approaches right now available and followed for identifying an optimized test case list.
One of such approach is to identify the changes in modules/methods of current builds as compared to previous builds at source code level and identify test cases based on the changes. For identifying the affected modules/methods of current build/versions, the current build of the software application to be tested is compared with the previous/historical build. Further to the comparison, the module/method is categorized as modified methods, deleted methods, newly added methods, etc. Furthermore, associated test cases of the modified methods are considered for execution. Furthermore, new test cases are added for the methods marked as newly added methods. This approach has some limitations. These limitations include the absence of test case associations with newly added methods. However, the new method may have different levels of relationship with already existing methods. Hence, test cases associated with related methods are relevant for the corresponding methods of new build. Some examples of such type are as follows:                Some methods in a newly added method list might be overridden methods of existing methods        Some methods in a newly added method list might be renamed methods of existing methods        Some methods in a newly added method list might be extended methods of existing methods        Some methods in a newly added method list might be derived methods of existing methods        
However, in this approach, the association between test case and method is predefined. As a result, methods of new build/version are affected by comparing the new build with the previous build. However, due to the complex relationship between methods, identification of affected methods is challenging.